package br.uniriotec.pssgbd.unterhaltung.model.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.uniriotec.pssgbd.unterhaltung.model.entidade.Pais;

public class PaisDAO extends GenericDAO{
	private static String sqlSelect = "SELECT cod_pais, nome_pais FROM pais ";
	
	public Pais obterPais(String sqlWhere, int codPais) throws SQLException, ClassNotFoundException{
		this.criaConexao(false);
		
		String sqlCompleta = sqlSelect + sqlWhere;
		
		PreparedStatement stmt = null;
		ResultSet rs = null;
		Pais pais = null;
		
		try{
			stmt = getConnection().prepareStatement(sqlCompleta);
			stmt.setInt(1, codPais);
			rs = stmt.executeQuery();
			if (rs.next()){
				pais = new Pais();
				pais.setCodPais(rs.getInt("cod_pais"));
				pais.setNome(rs.getString("nome_pais"));
			}
			
		}
		
		catch(SQLException e){
			throw e;
		}
		
		finally{
			try{
				stmt.close();
				rs.close();
				this.fechaConexao();
			} 
			catch (SQLException e) {
				throw e;
			}
		}
		
		return pais;
	}

	public List<Pais> obterPaises() throws SQLException, ClassNotFoundException{
		this.criaConexao(false);
		
		PreparedStatement stmt = null;
		ResultSet rs = null;
		Pais pais = null;
		List<Pais> listaPaises = new ArrayList<Pais>();
		
		try{
			stmt = getConnection().prepareStatement(sqlSelect);
			rs = stmt.executeQuery();
			while (rs.next()){
				pais = new Pais();
				pais.setCodPais(rs.getInt("cod_pais"));
				pais.setNome(rs.getString("nome_pais"));
				listaPaises.add(pais);
			}
			
		}
		
		catch(SQLException e){
			throw e;
		}
		
		finally{
			try{
				stmt.close();
				rs.close();
				this.fechaConexao();
			} 
			catch (SQLException e) {
				throw e;
			}
		}
		
		return listaPaises;
	}
	
	/**
	 * @return the sqlSelect
	 */
 	public String getSqlSelect() {
		return sqlSelect;
	}
}
